package com.boot.web.service;

import com.boot.web.dto.LoginDTO;
import com.boot.web.dto.UserDTO;
import com.boot.web.entity.User;
import com.boot.web.vo.MenuPowerVO;
import com.boot.web.vo.UserVO;
import com.boot.base.service.BaseService;

import java.util.List;
import java.util.Map;

/**
 * 系统用户信息业务层接口
 * @author 【zhouJie】
 * @date 2019-12-05 17:31:35
 */
public interface UserService extends BaseService<User> {

    /**
     * 根据登录名获取用户信息
     * @param loginName
     * @return
     */
    User getUserByLoginName(String loginName);

    /**
     * iView端登录
     * @param loginDTO
     * @return
     */
    UserVO login(LoginDTO loginDTO);

    /**
     * iView端登录成功获取用户基本信息
     * @param user
     * @return
     */
    UserVO getUserInfo(User user);

    /**
     * 获取当前登录用户可操作的菜单页面信息
     * @param userId
     * @return
     */
    List<MenuPowerVO> getMenuPowerList(Integer userId);

    /**
     * iView端验证解锁
     * @param afferent_password
     * @param cache_password
     * @return
     */
    boolean unLock(String afferent_password, String cache_password);

    /**
     * 根据模糊条件获取用户信息 + 分页 +（部门/角色）
     * @param map
     * @return
     */
    List<UserVO> getUserVOPageList(Map<String, Object> map);

    /**
     * 修改用户信息
     * @param userDTO - iView端传输数据对象
     * @return
     */
    User updateUser(UserDTO userDTO);

    /**
     * 添加用户信息
     * @param userDTO - iView端传输数据对象
     */
    User saveUser(UserDTO userDTO);

    /**
     * 删除系统用户信息
     * @param userId
     * @return
     */
    boolean deleteUser(Integer userId);

    /**
     * 批量删除系统用户信息
     * @param ids
     * @return
     */
    boolean batchDeleteUser(Integer[] ids);

    /**
     * 根据用户ID启用或禁用当前用户
     * @param userId
     */
    boolean enableOrDisableUser(Integer userId);

    /**
     * 根据部门ID获取下面的用户
     * @param departmentId
     * @return
     */
    List<User> getUserByDepartmentId(Integer departmentId);

}
